home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 6: Level 6
/
17 Bit - Level 6 (1998)(Epic Marketing)[!].iso
/
!applications!
/
crmv1.91t
/
developer
/
c
/
include
/
libraries
/
crm.h
Wrap
C/C++ Source or Header
|
1993-02-03
|
4KB
|
139 lines
#ifndef LIBRARIES_CRM_H
#define LIBRARIES_CRM_H
/*
** $Filename: libraries/crm.h $
** $Release: 4.0 $
** $Date: 26-Sep-93 $
**
** CrM.library include and definition file
**
** (c) 1992-3 Thomas Schwarz
** All Rights Reserved
*/
/*------------------------------------------------------------------------*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif
#define CRMNAME "CrM.library"
#define CRMVERSION 4
/**************
* Data Header
**************/
struct DataHeader
{
ULONG dh_ID;
WORD dh_MinSecDist;
ULONG dh_OriginalLen;
ULONG dh_CrunchedLen;
};
/***************
* CurrentStats
***************/
struct cmCurrentStats
{
ULONG cmcu_ToGo;
ULONG cmcu_Len;
};
/********************
** CrunchStruct(ure)
********************/
struct cmCrunchStruct
{
APTR cmcr_Src; /* Source Start */
ULONG cmcr_SrcLen; /* Source Len */
APTR cmcr_Dest; /* Destination Start */
ULONG cmcr_DestLen; /* Destination Len (maximum) */
struct DataHeader *cmcr_DataHdr; /* DataHeader */
struct Hook *cmcr_DisplayHook; /* Hook to display ToGo/Gain Counters */
/*** Registers hold these values when the Hook is called: */
/*** a0:struct Hook* a2:struct cmCrunchStruct* a1:struct cmCurrentStats* */
/*** you have to return TRUE/FALSE in d0 to continue/abort crunching! */
UWORD cmcr_DisplayStep; /* time between 2 calls to the Hook */
/******** readonly: ********/
UWORD cmcr_Offset; /* desired Offset */
UWORD cmcr_HuffSize; /* HuffLen in KBytes */
UWORD cmcr_Algo; /* desired Packalgorithm */
ULONG cmcr_MaxOffset; /* biggest possible Offset (Buffer allocated) */
ULONG cmcr_RealOffset; /* currently used Offset */
ULONG cmcr_MinSecDist; /* MinSecDist for packed Data */
ULONG cmcr_CrunchedLen; /* Length of crunched Data at cmcr_Dest */
/******** private: ********/
ULONG cmcr_HuffTabs;
ULONG cmcr_HuffBuf;
ULONG cmcr_HuffLen;
ULONG cmcr_SpeedLen;
ULONG cmcr_SpeedTab;
ULONG cmcr_MegaSpeedTab;
UBYTE cmcr_QuitFlag; /* readonly: reason for failure */
UBYTE cmcr_OverlayFlag;
UBYTE cmcr_LEDFlashFlag;
UBYTE cmcr_Pad;
/* CrunchStruct continues here, but LEAVE YOUR HANDS OFF!!! */
};
/*************************************
** Result Codes of cmCheckCrunched()
** and Symbols for the CMCS_Algo Tag
*************************************/
#define cm_Normal 1
#define cm_LZH 2
#define cmB_Sample 4
#define cmF_Sample (1<<cmB_Sample)
#define cmB_PW 5
#define cmF_PW (1<<cmB_PW)
#define cmB_Overlay 8 /* only for the */
#define cmF_Overlay (1<<cmB_Overlay) /* CMCS_Algo Tag! */
#define cmB_LEDFlash 9 /* only for the */
#define cmF_LEDFlash (1<<cmB_LEDFlash) /* CMCS_Algo Tag! */
/** Use this mask to get the crunch algorithm without any other flags: */
#define cm_AlgoMask 0xF
/**********************************
** Action Codes for cmProcessPW()
**********************************/
#define cm_AddPW 1
#define cm_RemovePW 2
#define cm_RemoveAll 3
/**********************************
** Action Codes for cmCryptData()
**********************************/
#define cm_EnCrypt 4
#define cm_DeCrypt 5
/********************************************
** Action Codes for cmProcessCrunchStruct()
********************************************/
#define cm_AllocStruct 6
#define cm_FreeStruct 7
/************************************
** Tags for cmProcessCrunchStruct()
************************************/
#define CM_TagBase TAG_USER
#define CMCS_Algo (CM_TagBase+1) /* default: cm_LZH */
#define CMCS_Offset (CM_TagBase+2) /* default: $7ffe */
#define CMCS_HuffSize (CM_TagBase+3) /* default: 16 */
/********************************************
** for older Code, _DON'T_ use in new code:
********************************************/
#define dh_OrginalLen dh_OriginalLen
#define cm_Sample 16
#define cm_NormSamp (cm_Normal|cm_Sample)
#define cm_LZHSamp (cm_LZH|cm_Sample)
#endif